package com.example.task2u;

import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.HashSet;

import android.app.Application;
import android.content.Context;
import android.util.Log;

public class TarefasFicheiro extends Application {

	ArrayList<Tarefa> arr_taf_hoje = new ArrayList<Tarefa>();
	ArrayList<Tarefa> arr_taf_amanha = new ArrayList<Tarefa>();
	ArrayList<Tarefa> arr_taf_pendente = new ArrayList<Tarefa>();

	int esta = 0;

	public TarefasFicheiro() {

	}

	public Tarefa getTarefa_hoje(int id) {
		if (arr_taf_hoje != null && arr_taf_hoje.size() > 0)
			for (Tarefa taff : arr_taf_hoje)
				if (taff.id == id)
					return taff;
		return null;
	}

	public Tarefa getTarefa_amanha(int id) {
		if (arr_taf_amanha != null && arr_taf_amanha.size() > 0)
			for (Tarefa taff : arr_taf_amanha)
				if (taff.id == id)
					return taff;
		return null;
	}

	public Tarefa getTarefa_pendente(int id) {
		if (arr_taf_pendente != null && arr_taf_pendente.size() > 0)
			for (Tarefa taff : arr_taf_pendente)
				if (taff.id == id)
					return taff;
		return null;
	}

	public ArrayList<Tarefa> getArrTarefa_Hoje() {
		return arr_taf_hoje;
	}
	
	public void setArrTarefaHoje(ArrayList<Tarefa> tarefa){
		arr_taf_hoje = tarefa;
	}

	public ArrayList<Tarefa> getArrTarefa_Amanha() {
		return arr_taf_amanha;
	}
	
	public void setArrTarefaAmanha(ArrayList<Tarefa> tarefa){
		arr_taf_amanha = tarefa;
	}

	public ArrayList<Tarefa> getArrTarefa_Pendente() {
		return arr_taf_pendente;
	}

	public void setArrTarefaPendente(ArrayList<Tarefa> tarefa){
		arr_taf_pendente = tarefa;
	}

	
	public void Guardar(int le) {
		Log.d("TA A GUARDAAAR ", Integer.toString(le));

		if (le == 0) {
			Log.d("Devia tar a guardar","Aqui");
			try {

				FileOutputStream fos = this.openFileOutput("TarefasHoje11.txt",Context.MODE_PRIVATE);

				if (fos != null) {
					Log.d("Grava No", "Hojeeee");

					ObjectOutputStream os = new ObjectOutputStream(fos);

					for (int i = 0; i < arr_taf_hoje.size(); i++) {
						Log.d("Tou a gravar", arr_taf_hoje.get(i).getNome());
						os.writeObject(arr_taf_hoje.get(i));
					}

				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		else if (le == 1) {
			try {

				FileOutputStream fos = this.openFileOutput("TarefasAmanha11.txt", Context.MODE_PRIVATE);

				if (fos != null) {
					Log.d("Grava No", "Amanhaaaa");
					ObjectOutputStream os = new ObjectOutputStream(fos);

					for (int i = 0; i < arr_taf_amanha.size(); i++) {
						Log.d("Tou a gravar", arr_taf_amanha.get(i).getNome());
						os.writeObject(arr_taf_amanha.get(i));
					}

				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		else if (le == 2) {
			try {

				FileOutputStream fos = this.openFileOutput("TarefasPendente11.txt", Context.MODE_PRIVATE);

				if (fos != null) {
					Log.d("Grava No", "Pendenteeee");
					ObjectOutputStream os = new ObjectOutputStream(fos);

					for (int i = 0; i < arr_taf_pendente.size(); i++) {
						Log.d("Tou a gravar", arr_taf_pendente.get(i).getNome());
						os.writeObject(arr_taf_pendente.get(i));
					}

				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

	@SuppressWarnings("unchecked")
	public void Ler(int l) {
		Log.d("TA A LEEEER: ", Integer.toString(l));

		if (l == 0) {
			Log.d("Cumpre if", "Cumpre if");
			try {
				FileInputStream fis = this.openFileInput("TarefasHoje11.txt");
				Log.d("TOU A LEEER", "FICHEIRO HOJE2");
				if (fis != null) {
					Log.d("Le No", "Hojeeeee");

					ObjectInputStream ois = new ObjectInputStream(fis);
					
				
						Log.d("entrei no try","do ler");
						 while (true){
							Tarefa t = (Tarefa) ois.readObject();
							Log.d("Tarefa Hoje",t.getNome());
							
							for(int i = 0; i<arr_taf_hoje.size();i++)
							{
								Log.d(arr_taf_hoje.get(i).getNome(),t.getNome());

								if(arr_taf_hoje.get(i).getNome().equals(t.getNome()))
									esta = 1;
							}
							
							if(esta == 0)
							{
								this.arr_taf_hoje.add(t);
								Log.d("ESTA = ","0");
							}

							esta = 0;

						}
	
				}

			} catch (Exception e) {
			}
		}

		else if (l == 1) {
			try {
				FileInputStream fis = this.openFileInput("TarefasAmanha11.txt");
				if (fis != null) {
					Log.d("Le No", "Amanhaaaa");

					ObjectInputStream ois = new ObjectInputStream(fis);


					try {
						while (true) {
							Tarefa t = (Tarefa) ois.readObject();
							Log.d("Tarefa Amanha",t.getNome());
							
							for(int i = 0; i<arr_taf_amanha.size();i++)
							{
								Log.d(arr_taf_amanha.get(i).getNome(),t.getNome());

								if(arr_taf_amanha.get(i).getNome().equals(t.getNome()))
									esta = 1;
							}
							
							if(esta == 0)
							{
								this.arr_taf_amanha.add(t);
								Log.d("ESTA = ","0");
							}

							esta = 0;
						}
					} catch (EOFException e) {
					}

					ois.close();
				}

			} catch (Exception e) {
			}
		}

		else if (l == 2) {
			try {
				FileInputStream fis = this
						.openFileInput("TarefasPendente10.txt");
				if (fis != null) {
					Log.d("Le No", "Pendenteee");

					ObjectInputStream ois = new ObjectInputStream(fis);

					for (int j = arr_taf_pendente.size(); j >= 0; j--)
						arr_taf_pendente.remove(j);

					try {
						while (true) {
							Tarefa t = (Tarefa) ois.readObject();
							this.arr_taf_pendente.add(t);
						}
					} catch (EOFException e) {
					}

					ois.close();
				}

			} catch (Exception e) {
			}
		}
	}

}
